package com.eliza.kotlin.design.creation.single

import com.eliza.ktor.all.library.utils.ToolsLog


/*-*- coding:utf-8 -*-
 * @Author  : debi
 * @Time    : 6/4/22
 * @Software: IntelliJ IDEA
 */

/*
*  恶汉式方式。 枚举实现方式
*/
/**
 * 枚举类实现单例模式是极力推荐的单例实现模式，因为枚举类型是线程安全的，并且只会装载一次，
 * 设计者充分的利用了枚举的这个特性来实现单例模式，枚举的写法非常简单
 * 而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。
 * */
private enum class LazyEnumSingleton {
    INSTANCE;
}

fun main() {

    //创建Singletion类的对象
    val instance = LazyEnumSingleton.INSTANCE

    val instance1 = LazyEnumSingleton.INSTANCE


    ToolsLog.LogPrintln(instance === instance1, 10)
    ToolsLog.LogPrintln(" ${instance.hashCode()}\n ${instance1.hashCode()}", 10)

}